<?php

require_once("../classes/DAO.php");
require_once("../classes/exceptions/criacaoTabelasException.php");

$xml = simplexml_load_file("tabelas.xml");
$arquivo = fopen("script.txt","w+");
$sqlArquivo = "";

$tabelas = $xml->children();

try {
	
    $conexao = new Conexao();

    foreach ($tabelas as $tabela) {

    $aux = 0;

    $chavePrimaria = false;
    $chaves = array();

    $sql = "CREATE TABLE IF NOT EXISTS ";
    $sqlArquivo .= $sql;

    $nomeTabela = $tabela["nome"];

    $sql .= $nomeTabela." (";
    $sqlArquivo .= $nomeTabela." (\n";

    $campos = $tabela->children();

    foreach ($campos as $campo) {

        $aux++;
        $atributosCampo = $campo->attributes();

        $nomeCampo = $campo->nome;
        $tipoCampo = $campo->tipo;

        $sql .= $nomeCampo;
        $sql .= " ".$tipoCampo;

        $sqlArquivo .= "   ".$nomeCampo;
        $sqlArquivo .= " ".$tipoCampo;

        if (isset($atributosCampo["nulo"])) {
            $sql .= " NULL";
            $sqlArquivo .= " NULL";
        }
        else {
                $sql .= " NOT NULL";
                $sqlArquivo .= " NOT NULL";
        }

        if (isset($atributosCampo["chave"])) {
                $chavePrimaria = true;
                $chaves[] = $nomeCampo;
        }

        if (isset($atributosCampo["autoincremento"])) {
                $sql .= " AUTO_INCREMENT";
                $sqlArquivo .= " AUTO_INCREMENT";
        }

        if (isset($atributosCampo["default"])) {
            $sql .= " DEFAULT ";
            $sql .= $atributosCampo["default"];
            $sqlArquivo .= " DEFAULT ";
            $sqlArquivo .= $atributosCampo["default"];
        }

        if ($aux <= count($campos) && $chavePrimaria) {
                $sql .= ",";
                $sqlArquivo .= ",\n";
        }

    }

        if ($chavePrimaria) {
            $aux = 0;
            $sql .= " PRIMARY KEY(";
            $sqlArquivo .= " PRIMARY KEY(";
            foreach ($chaves as $chave) {
                    $aux++;
                    $sql .= $chave;
                    $sql .= ($aux == count($chaves)) ? ")" : ",";
                    $sqlArquivo .= $chave;
                    $sqlArquivo .= ($aux == count($chaves)) ? ")" : ",";
            }
        }

        $sql .= ")";
        $sqlArquivo .= ")";

        $sql .= " ENGINE=InnoDB";
        $sqlArquivo .= " ENGINE=InnoDB\n\n";

        DAO::getInstance()->executeQuery($conexao, $sql);

        //echo $sql;
        //echo '<br><br>';

    }

    $conexao->commit();
    fwrite($arquivo,$sqlArquivo);
    fclose($arquivo);
	
} catch (Exception $e) {
	$conexao->rollback();
	echo $e->getMessage();
}

?>